#!/usr/bin/env python

import utiles
import servers
import MySQLdb
import MySQLdb.cursors
import string
from decimal import Decimal
import sys
import os

host=servers.host
user=servers.user
passwd=servers.passwd
db_name=servers.db_name

miBD=MySQLdb.connect(host=host,user=user,passwd=passwd,db=db_name)
miCursor=miBD.cursor()
miBDDict=MySQLdb.connect(host=host,user=user,passwd=passwd,db=db_name, cursorclass=MySQLdb.cursors.DictCursor)
miCursorDict=miBDDict.cursor()
midb=MySQLdb.connect(host=host,user=user,passwd=passwd,db=db_name)
micursor=midb.cursor()

def ordenCruda(consultaSQL):
    miCursor.execute(consultaSQL)
    auxiliar = miCursor.fetchall()
    return auxiliar

def ordenCrudaDict(consultaSQL, previo="SELECT 1"):
    miCursorDict.execute(previo)
    miCursorDict.execute(consultaSQL)
    auxiliar = miCursorDict.fetchall()    
    return auxiliar

def executa(sql):
    micursor.execute(sql)
    ultimoid = midb.insert_id()
    micursor.execute("set autocommit = 1")
    return ultimoid

# *****************************************************************************

def crearTabla():
    sql = "CREATE TABLE `erpsussan`.`vtas_valores2` (`idvalores` INT( 15 ) NOT NULL AUTO_INCREMENT ,\
    `idrecibo` VARCHAR( 15 ) NOT NULL ,`fecha` DATE NOT NULL ,`idcliente` VARCHAR( 15 ) NOT NULL ,\
    `idformapago` VARCHAR( 5 ) NOT NULL ,`montopago` DECIMAL( 10, 2 ) NOT NULL ,`descripcion` VARCHAR( 50 ) NULL ,\
    `vendedora` VARCHAR( 3 ) NOT NULL DEFAULT '0',PRIMARY KEY ( `idvalores` )) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_spanish_ci"
    try:
        crear = ordenCruda(sql)
        print "Tabla creada. =>",
    except:
        sql = "TRUNCATE TABLE vtas_valores2"
        crear = ordenCruda(sql)
        print "La tabla vtas_valores2 ya existe. Datos eliminados. =>",

def buscarFecha(idrecibo,descripcion):
    sql = "SELECT fecha FROM vtas_ctasctestienepagos WHERE idrecibo = '%s' GROUP BY idrecibo" % (idrecibo)
    fecha = ordenCruda(sql)
    if fecha == ():
        fecha = descripcion[27:31]+"-"+descripcion[24:26]+"-"+descripcion[21:23]
        if fecha == "--": fecha = "2008-05-12"
    else:
        fecha = fecha[0][0]
    return fecha

def llenarTabla():
    print "Llenando la tabla vtas_valores2 con nuevos datos."
    print "Esta operacion puede durar un par de minutos. Se procesaran",
    sql = "SELECT COUNT(*) FROM vtas_valores"
    cantidad = ordenCruda(sql)[0][0]
    print cantidad,"registros"
    print

    sql = "SELECT * FROM vtas_valores ORDER BY idvalores"
    listaValores = ordenCrudaDict(sql)
    for i,v in enumerate(listaValores):
        fecha = buscarFecha(v['idrecibo'],v['descripcion'])
        print "%4s" % (i+1),
        sql1 = "INSERT INTO vtas_valores2(idvalores,idrecibo,fecha,idcliente,idformapago,montopago,descripcion,vendedora) "
        sql2 = "VALUES('%s','%s','%s','%s','%s','%s','%s','%s')" % (v['idvalores'],v['idrecibo'],fecha,v['idcliente'],v['idformapago'],v['montopago'],v['descripcion'],v['vendedora'])
        sql = sql1 + sql2
        resultado = executa(sql)
    print
    print "Fin del tratamiento de la tabla vtas_valores2"
        
if __name__ == '__main__':

    print "Crear tabla vtas_valores2"
    crearTabla()
    llenarTabla()

    miCursor.close()
    miBD.close()
    micursor.close()
